package gwtool.gui;

import gwtool.gui.dataSetTable.DataSetTablePanel;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;

public class HauptFensterPanel extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private MainController mainController;

	private JPanel panel_1;

	private JTabbedPane tabbedPane_1;

	private JMenuBar menuBar;

	private JMenu mnEinstellungen;

	private JMenu mnHilfe;

	private JMenuItem mntmberGwtool;

	private JMenu mnDatei;

	private JMenuItem mntmSchlieen;

	private JSeparator separator;

	private JMenuItem mntmLscheLokaleDateien;

	private JMenuItem mntmDrucken;

	private JMenuItem mntmcache;

	public HauptFensterPanel(MainController mainController) {

		this.mainController = mainController;
		initialize();
		if (mainController.getDataController().getComm().istServerErreichbar()) {
			setTitle("");
		} else {
			setTitle("Offline");
		}
	}

	public void setTitle(String online) {

		mainController.getJFrame().setTitle("GW-Tool  " + online + "   " + MainController.getVersion());
	}

	private void initialize() {

		GridBagLayout gridBagLayout = new GridBagLayout();
		gridBagLayout.columnWidths = new int[] { 540, 540, 0 };
		gridBagLayout.rowHeights = new int[] { 0, 0 };
		gridBagLayout.columnWeights = new double[] { 1.0, 1.0, Double.MIN_VALUE };
		gridBagLayout.rowWeights = new double[] { 1.0, Double.MIN_VALUE };
		setLayout(gridBagLayout);
		GridBagConstraints gbc_panel_1 = new GridBagConstraints();
		gbc_panel_1.insets = new Insets(0, 0, 0, 5);
		gbc_panel_1.fill = GridBagConstraints.BOTH;
		gbc_panel_1.gridx = 0;
		gbc_panel_1.gridy = 0;
		add(getPanel_1(), gbc_panel_1);
		GridBagConstraints gbc_tabbedPane_1 = new GridBagConstraints();
		gbc_tabbedPane_1.fill = GridBagConstraints.BOTH;
		gbc_tabbedPane_1.gridx = 1;
		gbc_tabbedPane_1.gridy = 0;
		add(getTabbedPane_1(), gbc_tabbedPane_1);
	}

	private JPanel getPanel_1() {

		if (panel_1 == null) {
			panel_1 = new DataSetTablePanel();
		}
		return panel_1;
	}

	private JTabbedPane getTabbedPane_1() {

		if (tabbedPane_1 == null) {
			tabbedPane_1 = new JTabbedPane(SwingConstants.TOP);
		}
		return tabbedPane_1;
	}

	public JTabbedPane getTabbedPane() {

		return getTabbedPane_1();
	}

	public JMenuBar getMenuBar_1() {

		if (menuBar == null) {
			menuBar = new JMenuBar();
			menuBar.add(getMnDatei());
			menuBar.add(getMnEinstellungen());
			menuBar.add(getMnHilfe());
		}
		return menuBar;
	}

	private JMenu getMnEinstellungen() {

		if (mnEinstellungen == null) {
			mnEinstellungen = new JMenu("Einstellungen");
			mnEinstellungen.add(getCacheAnlegen());
		}
		return mnEinstellungen;
	}

	private JMenu getMnHilfe() {

		if (mnHilfe == null) {
			mnHilfe = new JMenu("Hilfe");
			mnHilfe.add(getMntmberGwtool());
		}
		return mnHilfe;
	}

	public JMenuItem getMntmberGwtool() {

		if (mntmberGwtool == null) {
			mntmberGwtool = new JMenuItem("\u00FCber GW-Tool");
			mntmberGwtool.addActionListener(mainController);
		}
		return mntmberGwtool;
	}

	public JMenuItem getCacheAnlegen() {

		if (mntmcache == null) {
			mntmcache = new JMenuItem("Cache anlegen?");
			mntmcache.addActionListener(mainController);
		}
		return mntmcache;
	}

	private JMenu getMnDatei() {

		if (mnDatei == null) {
			mnDatei = new JMenu("Datei");
			mnDatei.add(getMntmLscheLokaleDateien());
			mnDatei.add(getMntmDrucken());
			mnDatei.add(getSeparator());
			mnDatei.add(getMntmSchlieen());
		}
		return mnDatei;
	}

	public JMenuItem getMntmSchlieen() {

		if (mntmSchlieen == null) {
			mntmSchlieen = new JMenuItem("schlie\u00DFen");
			mntmSchlieen.addActionListener(mainController);
		}
		return mntmSchlieen;
	}

	private JSeparator getSeparator() {

		if (separator == null) {
			separator = new JSeparator();
		}
		return separator;
	}

	public JMenuItem getMntmLscheLokaleDateien() {

		if (mntmLscheLokaleDateien == null) {
			mntmLscheLokaleDateien = new JMenuItem("l\u00F6sche lokale Dateien");
			mntmLscheLokaleDateien.addActionListener(mainController);
		}
		return mntmLscheLokaleDateien;
	}

	public JMenuItem getMntmDrucken() {

		if (mntmDrucken == null) {
			mntmDrucken = new JMenuItem("Drucken");
			mntmDrucken.addActionListener(mainController);
		}
		return mntmDrucken;
	}
}
